% Deze functie genereerd de uitvoer van de sensoren.
% Alle coordinaten zijn (x, y)-coordinaten.
% Argumenten:
% - transmitter		De coordinaten van de transmitter.
% - recievers		De coordinaten van de recievers in de vorm van [x1 y1; x2 y2; ...].
% - objects		De coordinaten van de objecten in de vorm van [x1 y1; x2 y2; ...].
% - sim_time		Een array met tijden waarop de uitvoerwaarde van een sensor berekend moet worden.
% - freq		De frequentie van het geluid.
% - c			De snelheid van het geluid (standaard 343 m/s).
% Uitvoer:
% - output		De waarde die een sensor op een bepaalde tijd geeft. Vorm: [u1_t0 u1_t1 ...; u2_t0 u2_t1 ...; ...]

function output = generate_sensor_output(transmitter, recievers, objects, sim_time, freq, c)
	%narginchk(5, 6); % Controleer of er wel genoeg inputs zijn.
	
	% Zet de standaard geluidssnelheid als deze niet als parameter opgegeven is.
	if (nargin == 5 || isempty(c))
		c = 343; % Geluidssnelheid bij 20 graden Celcius.
	end
	n_recv = size(recievers, 1);
	
	% De tijd die het geluid er over doet om van transmitter naar recievers te komen berekenen.
	d_trans_obj = sqrt((transmitter(1) - objects(1)).^2 + (transmitter(2) - objects(2)).^2); % De afstand van de transmitter tot de objecten.
	%for i = 1:size(objects, 1) % De afstand van de transmitter tot de sensoren via de objecten berekenen.
		distance = d_trans_obj + sqrt((recievers(:, 1) - objects(1)).^2 + (recievers(:, 2) - objects(2)).^2);
	%end
	dist_time = distance ./ c; % Op t = 0 wordt verzonden. dist_time bevat de aankomsttijd van de golf.
	
	output = zeros(n_recv, size(sim_time, 2));
	for n = 1:n_recv
		output(n, :) = heaviside(sim_time - dist_time(n)) .* sin(2*pi*freq * (sim_time + dist_time(n)));
	end
